const express = require('express');
const app = express();


let server = app.listen(3000, function () {
  let host = server.address().address;
  let port = server.address().port;
  console.log('Your App is running at http://%s:%s', host, port);
});
// app.get('/', function (req, res) {
//     res.send('Hello World!');
//   });

  const superagent= require('superagent');

let miDatas = [];                                

/**
 * index.js
 * [description] - 使用superagent.get()方法来访问小米商品列表页，可根据实际页面更改后缀
 */
superagent.get('https://list.mi.com/31-0-0-0-0-0-0-0-1').end((err, res) => {
  if (err) {
    // 如果访问失败或者出错，会这行这里
    console.log(`数据抓取失败 - ${err}`)
  } else {
   // 访问成功，请求页面所返回的数据会包含在res
   // 抓取数据
   miDatas = getMiDatas(res)
  }
});
// 引入所需要的第三方包
const cheerio = require('cheerio');

let getMiDatas = (res) => {
  let miDatas = [];
  // 访问成功，请求页面所返回的数据会包含在res.text中。
  
  /* 使用cheerio模块的cherrio.load()方法，将HTMLdocument作为参数传入函数
     以后就可以使用类似jQuery的$(selectior)的方式来获取页面元素
   */
  let $ = cheerio.load(res.text);

  // 找到目标数据所在的页面元素，获取数据
  $('.goods-list .goods-item').each((idx, ele) => {
    // cherrio中$('selector').each()用来遍历所有匹配到的DOM元素
    // 参数idx是当前遍历的元素的索引，ele就是当前便利的DOM元素
    let news = {

      title: $(ele).find('h2').text(),  //获取商品名称
      price: $(ele).find('p').text(),   //获取商品价格
      img: $(ele).find("img").attr('src')   //获取商品图片地址

    };
    miDatas.push(news)              // 存入最终结果数组
  });
  return miDatas
};
app.get('/', async (req, res, next) => {
    res.send(miDatas);
  });